﻿using Abp.Application.Services.Dto;
using SingleUserMall.Common;
using SingleUserMall.Items.Form;
using SingleUserMall.Items.VO;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SingleUserMall.Items
{
    /// <summary>
    /// 商品管理
    /// </summary>
    [Description("商品管理")]
    public interface IItemManageAppService:IManageService
    {
        /// <summary>
        /// 获取店铺的商品分类
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task<ListResultDto<ItemCategoryVO>> GetItemCategoriesAsync(ItemCategorySearchForm form);
        /// <summary>
        /// 保存商品分类
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task SaveItemCategoryAsync(ItemCategoryForm form);
        /// <summary>
        /// 移除商品分类
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task RemoveItemCategoriesAsync(MultiplyId<long> form);
        /// <summary>
        /// 上移商品分类
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task MoveUpItemCategoryAsync(SingleId<long> form);
        /// <summary>
        /// 下移商品分类
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task MoveDownItemCategoryAsync(SingleId<long> form);
        /// <summary>
        /// 获取商品详情
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task<ItemVO> GetItemAsync(SingleId<long> form);
        /// <summary>
        /// 保存商品
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task<ItemVO> SaveItemAsync(ItemForm form);
        /// <summary>
        /// 设置是否上架
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task SetItemSaleAsync(ItemSaleForm form);
        /// <summary>
        /// 查询商品
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task<PagedResultDto<ItemVO>> GetItemsAsync(ManageItemSearchForm form);
        /// <summary>
        /// 移除商品
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task RemoveItemAsync(SingleId<long> form);
        /// <summary>
        /// 获取店铺推荐类型列表
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task<ListResultDto<RecommendCategoryVO>> GetRecommendCategoriesAsync(HasStoreForm form);
        /// <summary>
        /// 获取推荐类型详情
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task<RecommendCategoryVO> GetRecommendCategoryAsync(SingleId<long> form);
        /// <summary>
        /// 保存推荐类型
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task SaveRecommendCategoryAsync(RecommendCategoryForm form);
        /// <summary>
        /// 移除推荐类型
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task RemoveRecommendCategoryAsync(SingleId<long> form);
        /// <summary>
        /// 上移推荐类型
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task MoveUpRecommendCategoryAsync(SingleId<long> form);
        /// <summary>
        /// 下移推荐类型
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task MoveDownRecommendCategoryAsync(SingleId<long> form);
        /// <summary>
        /// 上移商品
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task MoveUpItemAsync(SingleId<long> form);
        /// <summary>
        /// 下移商品
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task MoveDownItemAsync(SingleId<long> form);
        /// <summary>
        /// 获取商品规格列表
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task<ListResultDto<ItemSpecVO>> GetItemSpecsAsync(SingleId<long> form);
        /// <summary>
        /// 获取商品规格详情
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task<ItemSpecVO> GetItemSpecAsync(SingleId<long> form);
        /// <summary>
        /// 保存商品规格
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task SaveItemSpecAsync(ItemSpecForm form);
        /// <summary>
        /// 移除商品规格
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task RemoveItemSpecAsync(SingleId<long> form);
        /// <summary>
        /// 获取商品评论
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task<PagedResultDto<ItemCommentVO>> GetItemCommentsAsync(ItemCommentSearchForm form);
        /// <summary>
        /// 移除商品评论
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task RemoveItemCommentAsync(SingleId<long> form);
        /// <summary>
        /// 获取商品sku
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task<ListResultDto<ItemSkuCategoryVO>> GetItemSkusAsync(SingleId<long> form);

        /// <summary>
        /// 保存商品sku类别
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task SaveItemSkuCategoryAsync(ItemSkuCategoryForm form);
        /// <summary>
        /// 保存商品sku
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task SaveItemSkuAsync(ItemSkuForm form);
        /// <summary>
        /// 移除商品sku类别
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task RemoveItemSkuCategoryAsync(SingleId<long> form);
        /// <summary>
        /// 移除商品sku
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task RemoveItemSkuAsync(SingleId<long> form);
        /// <summary>
        /// 根据商品id获取sku商品规格列表
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task<ListResultDto<ItemSpecManageVO>> GetItemSkuSpecsAsync(SingleId<long> form);
        /// <summary>
        /// 查询所有经营范围
        /// </summary>
        /// <returns></returns>
        Task<PagedResultDto<BusinessScopeVO>> GetAllBusinessScopeAsync(BusinesssSearchForm form);
        /// <summary>
        /// 保存经营范围
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task SaveBuusinessScopeAsync(BusinessScopeForm form);
        /// <summary>
        /// 设置评论回复
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task SetItemCommentReplyAsync(ItemCommentReplyForm form);
        /// <summary>
        /// 设置商品置顶
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task SetItemIsPop(SingleId<long> form);
        /// <summary>
        /// 取消商品置顶
        /// </summary>
        /// <param name="form"></param>
        /// <returns></returns>
        Task SetItemIsNotPop(SingleId<long> form);
    }
}
